from src.sprite.BackGround import *  # 从模块导入所有类
import sys

"""基本界面基类"""


class BaseViewControl:

    # 初始化，定义变量
    def __init__(self):
        super(BaseViewControl, self).__init__()
        print("===初始化===")
        pygame.init()
        # 定义成员变量
        self.screen = pygame.display.set_mode(SCREEN_RECT.size)  # 游戏窗
        self.clock = pygame.time.Clock()  # 游戏时钟
        pygame.display.set_caption('打飞机')
        self.backGround = BackGround()
        self.running = True
        self.stepNum = 0

    # 运行时
    def runTime(self):
        while self.running:
            self._step()
            # 跟新显示
            self._onDraw()
            self._handEvent()
            # 更新画布
            pygame.display.flip()
            # 设置刷新帧率
            self.clock.tick(FRAME_PER_SEC)

    # 步骤帧
    def _step(self):
        self.stepNum += 1
        if self.stepNum > 1000:
            self.stepNum = 0  # 步数归零
        self.backGround.step(self.stepNum)

    # 绘制画面
    def _onDraw(self):
        self.backGround.onDraw(self.screen)

    # 事件处理
    def _handEvent(self):
        # 获取事件
        for event in pygame.event.get():
            # 判断事件是否为退出事件
            if event.type == pygame.QUIT:
                self.exitApp()

    # 退出程序
    @staticmethod
    def exitApp():
        # 退出pygame
        pygame.quit()
        sys.exit(0)
